/*!
 *  \file       CosineSignalGenerator.hpp
 *  \brief      Definizione della classe \c CosineSignalGenerator
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author	Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 *
 */

#ifndef _COSINE_SIGNAL_GENERATOR_H
#define _COSINE_SIGNAL_GENERATOR_H

/*!
 *  \brief      Definizione della classe \c cosineSignalGenerator
 *
 * Questa classe identifica un segnale sinusoidale descritto da
 * \f$S_x = cos( x )\f$
 */
template< class tType >
class CosineSignalGenerator : public ISignalGenerator< tType > {
  public :
    CosineSignalGenerator( const unsigned long int );
    CosineSignalGenerator( CosineSignalGenerator< tType > const& );
    
    virtual CosineSignalGenerator& operator=( const CosineSignalGenerator& );
    
    // interface methods
    virtual tType operator() ( void );
    
  private :
    tType currPoint_,	/*!< Punto corrente nel calcolo della funzione */
	  iStep_;	/*!< Incremento tra i punti della funzione */
};

#endif              /* _COSINE_SIGNAL_GENERATOR_H */
